package com.member.shop.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.member.shop.domain.SysBizDevelopOrder;
import com.member.shop.dto.DevelopBuyDto;
import com.member.shop.vo.DevelopOrderVo;
import com.member.shop.vo.PayVo;

import java.util.List;

/**
 * 发展会员数订单Service接口
 *
 * @author lixinchen
 * @date 2024-01-09
 */
public interface ISysBizDevelopOrderService extends IService<SysBizDevelopOrder> {
    /**
     * 查询发展会员数订单
     *
     * @param id 发展会员数订单主键
     * @return 发展会员数订单
     */
    public SysBizDevelopOrder selectSysBizDevelopOrderById(Long id);

    /**
     * 查询发展会员数订单列表
     *
     * @param queryWrapper 发展会员数订单
     * @return 发展会员数订单集合
     */
    public List<SysBizDevelopOrder> selectSysBizDevelopOrderList(LambdaQueryWrapper<SysBizDevelopOrder> queryWrapper);

    /**
     * 查询发展会员数订单列表
     *
     * @param sysBizDevelopOrder 发展会员数订单
     * @return 发展会员数订单集合
     */
    public List<SysBizDevelopOrder> selectSysBizDevelopOrderList(SysBizDevelopOrder sysBizDevelopOrder);
    /**
     * 新增发展会员数订单
     *
     * @param sysBizDevelopOrder 发展会员数订单
     * @return 结果
     */
    public int insertSysBizDevelopOrder(SysBizDevelopOrder sysBizDevelopOrder);

    /**
     * 修改发展会员数订单
     *
     * @param sysBizDevelopOrder 发展会员数订单
     * @return 结果
     */
    public int updateSysBizDevelopOrder(SysBizDevelopOrder sysBizDevelopOrder);

    /**
     * 批量删除发展会员数订单
     *
     * @param ids 需要删除的发展会员数订单主键集合
     * @return 结果
     */
    public int deleteSysBizDevelopOrderByIds(Long[] ids);

    /**
     * 删除发展会员数订单信息
     *
     * @param id 发展会员数订单主键
     * @return 结果
     */
    public int deleteSysBizDevelopOrderById(Long id);

    DevelopOrderVo perDevelopOrder(DevelopBuyDto developBuyDto, Long userId);

    SysBizDevelopOrder paymentDevelop(DevelopBuyDto developBuyDto, Long userId);

    DevelopOrderVo queryDevelopDetail(Long id);

    List<Long> queryDevelopUserId(Long userId);

}
